func candy(ratings []int) int {
    // 分开考虑，先确定一边
    // 先从右边大于左边开始考虑，就需要从左向右遍历
    // 再判断左边大于右边的情况，从右向左遍历，为什么要从右向左，是为了使用上一次的结果
    sugars := make([]int, len(ratings))
    for i:=0; i<len(sugars); i++ {
        sugars[i] = 1
    }

    // 从左向右遍历：
    for i:=1; i<len(ratings); i++ {
        if ratings[i] > ratings[i-1] {
            sugars[i] = sugars[i-1] + 1
        }
    }

    // 从右向左遍历：
    for i:=len(ratings)-2; i>=0; i-- {
        if ratings[i] > ratings[i+1] {
            sugars[i] = max(sugars[i+1]+1, sugars[i]) // 需要取大的满足要求。
        }
    }

    // 累加结果
    sum := 0
    for _, v := range sugars {
        sum += v
    }

    return sum
}

func max(a, b int) int {
    if a > b {
        return a
    }
    return b
}